#include<iostream>
#include<algorithm>
using namespace std;
int n,dic[1000][1000]={},tor[1000]={},p[1000]={},gj[1000]={},a,b,safe=0,abc=0,xyz[1000];
int dfs(int root)
{
	int x,y=0;
	for(x=1;x<=n;x++)
	{
		if(dic[root][x]==1&&tor[x]==0)
		{
			y++;
			tor[x]=1;
			if(p[x]==0||p[x]>p[root]+1)
			{
				p[x]=p[root]+1;
			}
			dfs(x);
			if(p[x]<p[root])
			{
				p[root]=p[x];
			}
			else if(root!=1&&gj[root]==0)
			{
				xyz[abc++]=root;
				gj[root]++;
				safe++;
			}
		}
	}
	if(root==1&&y>1)
	{
		cout<<1<<" ";
		safe++;
	}
	for(x=1;x<=n;x++)
	{
		if(tor[x]==1&&dic[root][x]==1&&p[x]+1<p[root])
		{
			p[root]=p[x];
		}
	}
	return 0;
}
int main()
{
	cin>>n;
	for(a=1;a<=n;a++)
	{
		for(b=1;b<=n;b++)
		{
			cin>>dic[a][b];
		}
	}
	p[1]=1;
	tor[1]=1;
	dfs(1);
	sort(xyz,xyz+abc);
	for(a=0;a<abc;a++)
	{
		cout<<xyz[a]<<" ";
	}
	if(safe==0)
	{
		cout<<"safe"<<endl;
	}
}
